package com.wmh.baseservice.skd.service;

import com.wmh.baseservice.skd.pojo.SkdGroupBuyingActivities;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wmh.baseservice.skd.pojo.vo.AddGroupBuyingActivitiesReqVO;
import com.wmh.baseservice.skd.pojo.vo.NearbyGroupBuyingActiviesRespVO;
import com.wmh.baseservice.skd.pojo.vo.RecycleBinGroupBuyingActivitiesRespVO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
* @author CH
* @description 针对表【skd_group_buying_activities(团购活动表)】的数据库操作Service
* @createDate 2024-01-03 09:21:39
*/
public interface SkdGroupBuyingActivitiesService extends IService<SkdGroupBuyingActivities> {

    /**
     * 解析商品快照获取指定商品划线价
     * @param goodsSnapshot 商品快照
     * @param goodsId 商品id
     * @return 返回商品划线价
     */
    BigDecimal getCrossedPriceFromGoodsSnapshot(String goodsSnapshot, Long goodsId);

    /**
     * 解析商品快照获取指定商品名称
     * @param goodsSnapshot 商品快照
     * @param goodsId 商品id
     * @return 返回商品名称
     */
    String getGoodsNameFromGoodsSnapshot(String goodsSnapshot, Long goodsId);

    /**
     * 解析商品快照中获取价格范围
     * @param goodsSnapshot 商品快照
     * @return 返回商品价格范围
     */
    String getPriceRangeFromGoodsSnapshot(String goodsSnapshot);

    /**
     * 解析商品快照中获取商品图片地址
     * @param goodsSnapshot 商品快照
     * @return 返商品图片地址列表
     */
    List<String> getGoodsImagesFromGoodsSnapshot(String goodsSnapshot);

    /**
     * 解析商品快照中获取商品视频地址
     * @param goodsSnapshot 商品快照
     * @return 返回商品视频地址
     */
    String getGoodsVideoFromGoodsSnapshot(String goodsSnapshot);

    /**
     * 一键开团
     */
    String startGroupBuying(AddGroupBuyingActivitiesReqVO reqVO);

    /**
     * 修改团购活动
     * @param groupBuyingActivityId 团购活动id
     * @param reqVO 团购活动请求体
     * @return 返回是否修改成功
     */
    String modifyGroupBuying(Long groupBuyingActivityId, AddGroupBuyingActivitiesReqVO reqVO);

    /**
     * 获取附近的团购活动列表
     * @param pickupPointsAndDistanceList 自提点和距离列表
     * @return 返回附近的团购活动列表
     */
    List<NearbyGroupBuyingActiviesRespVO> getNearbyGroupBuys(List<Map<Long, Double>> pickupPointsAndDistanceList);

    /**
     * 结束团购活动
     * @param groupBuyingActivityId 团购活动id
     * @return 返回是否结束成功
     */
    String endGroupBuying(Long groupBuyingActivityId);

    /**
     * 恢复已结束的团购活动
     * @param groupBuyingActivityId 团购活动id
     * @return 返回是否恢复成功信息
     */
    String restoreGroupBuying(Long groupBuyingActivityId);

    /**
     * 查看回收站内团购活动
     * @return 返回回收站团购活动响应体
     */
    List<RecycleBinGroupBuyingActivitiesRespVO> checkRecycleBin(Long usId);

    /**
     * 根据id获取已删除的团购活动
     * @param groupBuyingActivityId 团购活动id
     * @return 返回团购
     */
    String recoverActivity(Long groupBuyingActivityId);

    /**
     * 删除团购活动
     * @param groupBuyingActivityId 团购活动id
     * @return 返回是否删除成功信息
     */
    String deleteGroupBuying(Long groupBuyingActivityId);

    /**
     * 根据团购活动id查询团购活动(包含已删除的团购活动)
     * @param groupBuyingActivityId 团购活动id
     * @return 返回团购活动
     */
    SkdGroupBuyingActivities selectGroupBuyingActivity(Long groupBuyingActivityId);
}
